開始之前,我相信你已經有碰過flask的經驗,或是至少知道藉由
pip install Flask
來進行安裝。
要提到blue_print,首先要提到為甚麼我們要使用他。
當你的網頁功能很多,已經超過了30個路由功能擠在了你的app.py。
你的app.py 寫了超過500行的程式碼,這時候你的PM或是你的客戶跑來跟你說我的某個功能要改一下,而且我也不想付你半毛錢。
這時候你的頭腦開始高速運轉並且燒了起來,這個該死的功能到底在app.py的第幾行呢?
你不知道,直到從大大的口中得知了blue_print的存在。
你的生活出現了改變,至少是你的flask程式碼的品質出現了改變。
你可以把許多功能分門別類寫在不同的py檔,並且能從他們的名子中知道哪些功能在那裡了。
https://github.com/wilsonsujames/bule_print
你可以把上面的repository 自己git clone下來,也可以按右上角綠色的Code按鈕來download zip,或是自己寫一個。
你從bule_print-main進到blueprint_test並且看到了main.py,也執行了main.py。
你看見了寫在main.py的根路由 return了什麼:
接著你到達manu1,可以看到:
沒錯你只要要在其他的py檔中這樣寫:
from flask import Blueprint
testRoute = Blueprint('testRoute', __name__)
@testRoute.route('/manu1') # 路由拿掉剛才標上的生產
def testroute():
return '<h1>You win!</h1>'
並且在主程式(目前是main.py)進行引用及註冊:
from view.api import testRoute
app.register_blueprint(testRoute, url_prefix='')
你現在可以在好幾個資料夾寫好幾個py檔,而且你也可以依據他們的名稱快速找到哪一個功能在那裡。
至於要不要用url_prefix來讓你該blue print都帶有一樣的前綴,這可以看個人喜好。
注意:
在寫HTML的時候,假設用到了jinja及url_for並且前往其中一個blueprint的路由時。
請這樣寫:
<a href="{{ url_for('testRoute.testroute') }}">To manu1</a>
其中testRoute為該blueprint的變數名稱,testroute為該Route的function名子。
我想第二天就先這樣,晚上就看個世界大賽。